If the root package ended up depending on itself through some development
dependency (technically not a cycle), then the resolve phase would currently
overwrite some previous result, destroying the progress. By registering the root
package as seen early on this prevents the overwriting from happening and
instead appending happens.
let _p = profile::start(format!("resolving: {}", summary));
let mut context = Context::new(registry, summary.get_package_id().clone());
+ context.seen.insert((summary.get_name().to_string(),
+ summary.get_source_id().clone()),
+ summary.get_version().clone());
try!(resolve_deps(summary, method, &mut context));
log!(5, " result={}", context.resolve);
Ok(context.resolve)